package com.edward.puff.annotation;

import com.edward.puff.asyn.TransLogRetryTask;
import com.edward.puff.asyn.impl.TransLogDefaultRetryTask;
import com.edward.puff.config.PuffScannerRegistrar;
import com.edward.puff.repository.TransLogRepository;
import com.edward.puff.repository.impl.TransLogDefaultRepository;
import org.springframework.context.annotation.Import;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: Edward
 * @Date: 2019/11/27 下午3:51
 * <p>
 * 启用puff组件
 */
@Import(PuffScannerRegistrar.class)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface EnablePuff {

    /**
     * 扫描路径
     */
    String[] basePackages();

    /**
     * 全局TransLogRepository实现类
     */
    Class<? extends TransLogRepository> globalRepository() default TransLogDefaultRepository.class;

    /**
     * 全局TransLogRetryTask实现类
     */
    Class<? extends TransLogRetryTask> globalRetryTask() default TransLogDefaultRetryTask.class;

    /**
     * 是否启用内置重试任务:推荐使用统一的调度平台进行重试
     */
    boolean enableTask() default false;
}
